Skip to main content
Glama
jindratilk

YouTube Research MCP

by jindratilk

YouTube Research MCP

A keyless YouTube MCP server and research skill for AI agents. Multi-language YouTube search with transcript highlights, transcripts by time range, chapter or query, real video frames, comments and channel outlier scores, in Claude Code, Codex and any MCP client.

Website · Install · Tools · The skill · FAQ

License: MIT No API key MCP Node 20+ Claude Code plugin Codex plugin


What it does

Ask your agent things like:

"List 20 hooks from this year's top AI productivity videos, with hook type, what's on screen, and a link to the second."

"Which of @channel's videos broke out this year, and what do they have in common?"

"What do creators say is the biggest mistake with AI note-taking? Quote them."

…and get back a table with verbatim quotes, ?t= timestamp links and a coverage line (what was searched, reviewed and skipped). No YouTube Data API key, no OAuth, no cookies.

Most YouTube MCP servers expose one call per video and dump whole transcripts into context. That falls apart when an agent has to look at 50 videos. This one follows the pattern that works for web-search agents: few tools, results that are already useful, and the research method in a skill.

Related MCP server: mcp-youtube-intelligence

Features

  • 🔎 Multi-query, multi-language search in one call. Up to 12 queries, each with its own interface language and region (hl/gl), merged and de-duplicated. Videos found by several queries rank higher.

  • ✨ Transcript highlights. The top results come with the passages that match your topic, with timestamped links, so the agent often never opens a transcript.

  • ✂️ Read only what you need. Transcripts by time range (start: 0, end: 30 for hooks), by chapter, or only the passages matching a query. Up to 25 videos per call.

  • 🎞️ Real video frames. Decoded frames (up to 1280 px) evenly spaced over a range or at exact seconds. On-screen text, b-roll and screen demos become visible. ffmpeg reads only the bytes around each frame, never the whole video.

  • 📈 Outlier scores. A channel's videos scored against its median views, to find the breakouts. Views/day on every search result.

  • 💬 Details, chapters, comments. Exact publish date, likes, tags, description, chapters (or description timestamps), top comments with pinned/creator flags, thumbnails.

  • 🧾 Nothing disappears silently. Every response ends with a coverage footer (raw → unique → after filters, what was dropped and why), and per-video failures carry a reason code.

  • 🛡️ Careful with YouTube's limits. API calls and caption downloads have separate queues. A caption rate limit triggers a cooldown instead of retries, and the tools say exactly how long to wait while everything else keeps working. Optional YT_PROXY for big sweeps.

  • 🧠 A research skill. It plans queries in every relevant language, fans out to parallel subagents, then merges, spot-checks quotes and reports coverage.

Install

The easy way: ask your agent

Paste this into Claude Code, Codex, Cursor or any agent that can run commands:

Install YouTube Research MCP for me from https://github.com/jindratilk/youtube-research-mcp. Follow the "Install instructions for AI agents" in its README for the client you are running in: the plugin (MCP server + research skill) in Claude Code or Codex, otherwise the MCP server config. Then run youtube_doctor and tell me whether everything works, and if I need to restart anything.

Claude Code (plugin: MCP server + skill)

claude plugin marketplace add jindratilk/youtube-research-mcp
claude plugin install youtube-research@youtube-research

Codex (plugin: MCP server + skill)

codex plugin marketplace add jindratilk/youtube-research-mcp
codex plugin add youtube-research@youtube-research

Claude Desktop, Cursor, Windsurf, VS Code, Zed, any MCP client

{
  "mcpServers": {
    "youtube": {
      "command": "npx",
      "args": ["-y", "github:jindratilk/youtube-research-mcp"]
    }
  }
}

The skill is optional outside the plugins: copy skills/youtube-research into your agent's skills folder.

From source

git clone https://github.com/jindratilk/youtube-research-mcp && cd youtube-research-mcp && npm install && npm run build
claude mcp add youtube -- node "$PWD/dist/index.js"

Requirements: Node.js 20+. dist/index.js is one bundled file with no runtime dependencies. For video frames also install yt-dlp and ffmpeg (brew install yt-dlp ffmpeg); yt-dlp also serves as a transcript fallback.

Install instructions for AI agents

If a user asked you to install YouTube Research MCP, follow these steps exactly.

  1. Check Node.js: node --version must be 20 or newer. If it is older or missing, stop and tell the user.

  2. Install for the client you are running in:

    • Claude Code (the claude CLI exists): run claude plugin marketplace add jindratilk/youtube-research-mcp, then claude plugin install youtube-research@youtube-research. This installs the youtube MCP server and the youtube-research skill.

    • Codex (the codex CLI exists): run codex plugin marketplace add jindratilk/youtube-research-mcp, then codex plugin add youtube-research@youtube-research.

    • Any other MCP client: add this server to the client's MCP config, keeping existing entries: "youtube": { "command": "npx", "args": ["-y", "github:jindratilk/youtube-research-mcp"] }. Common config files: Claude Desktop ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows); Cursor ~/.cursor/mcp.json; Windsurf ~/.codeium/windsurf/mcp_config.json; VS Code .vscode/mcp.json (uses a servers key instead of mcpServers). If the client supports skills, copy skills/youtube-research into its skills folder.

  3. Verify now, without a restart: run npx -y github:jindratilk/youtube-research-mcp --doctor. Every line should start with ✓. yt-dlp and ffmpeg are optional (needed only for video frames); if they are missing, offer to install them (brew install yt-dlp ffmpeg on macOS) but do not install without asking. A [rate_limited] transcript line means YouTube is throttling this IP for a while; everything else still works.

  4. Tell the user what you installed, the doctor result, and that they need to start a new session (or restart the app) for the new tools to appear.

Tools

Tool

What it does

youtube_search

Multi-query search with filters and transcript highlights

youtube_fetch

Batch read: transcript slices, real frames, details, chapters, comments, thumbnail

youtube_channel

A channel's videos with ×median outlier scores

youtube_doctor

Checks every YouTube path from your machine, with timings

{
  "queries": [
    "AI productivity workflow",
    "how I use AI to save 10 hours a week",
    { "query": "productividad con IA", "hl": "es", "gl": "ES" }
  ],
  "uploaded": "year",
  "minViews": 10000,
  "highlights": 5
}

Parameter

Meaning

queries

1–12 strings or {query, hl, gl} objects, run in parallel and merged

limit

Results per query before merging (default 10, max 50)

uploaded

hour · today · week · month · year (server-side)

publishedAfter / publishedBefore

YYYY-MM[-DD], applied after search, approximate

duration

short (<4 min) · medium (4–20) · long (>20)

minDurationSec / maxDurationSec / minViews

Post-filters

shorts

exclude (default) · include · only

captionsOnly

Only videos with subtitles/CC

sort

relevance · views · date

highlights / highlightsPerVideo

How many top results get transcript passages (default 5) and how many each (default 3)

highlightQuery

Highlight something other than the search topic, e.g. ["biggest mistake"]

transcriptLangs

Preferred caption languages; default is the video's original language

youtube_fetch

{
  "videos": ["https://youtu.be/TL8V41Ea6oM", "htZRCE2GgIs"],
  "parts": ["details", "transcript", "frames"],
  "start": 0,
  "end": 30,
  "frames": 4
}

Parameter

Meaning

videos

1–25 URLs or IDs (a ?t= in a URL is used as the start)

parts

details · transcript · chapters · comments · thumbnail · frames

start / end

Range for transcript and frames, in seconds or m:ss

chapter

Limit to the chapter whose title contains this text

query / matches

Return only matching transcript passages instead of the full text

timestamps

paragraph (~30 s blocks, default) · segment · none

maxCharacters

Transcript budget per video (default 12000); truncation says where to resume

frames / frameAt / frameWidth

N evenly spaced frames, or exact seconds; width up to 1280 px

commentsLimit

Top comments per video (default 20)

youtube_channel

{ "channel": "@aliabdaal", "limit": 60, "minOutlier": 2 }

Videos, Shorts or streams; latest · popular · oldest; up to 300 videos; subscriber and video counts; publishedAfter; minOutlier to keep only breakouts.

youtube_doctor

No parameters. Checks search, video details, transcripts, watch page, channels, yt-dlp and ffmpeg, and shows an active rate-limit pause.

The research skill

skills/youtube-research turns a request into a supervised sweep:

  1. Define the result first: the row schema and what qualifies (language, recency, views, long-form vs Shorts).

  2. Plan queries by angle and language: how-to, story, tools, mistakes; the user's language plus English, written natively.

  3. Spend transcripts carefully: pick by metadata first; transcripts are the rate-limited resource.

  4. Fan out: up to 3 parallel Haiku subagents, each with exact video IDs, the schema, and the closing lines videos_reviewed: N / skipped: ….

  5. Merge and verify: de-duplicate by video, spot-check quotes against the transcript, report coverage.

References: searching · hooks (10-type taxonomy) · quotes & claims · creators & outliers · synthesis.

How it works

  • No API key: talks to YouTube's internal Innertube API (the one the website and apps use) with plain HTTPS. Search, watch page, channels and comments use the web client; the player request uses the Android/iOS clients, whose caption URLs work without a PO token.

  • Highlights: lexical passage scoring in memory per request. It folds accents, stems by prefix (so productivity matches productive), weights rare terms higher and rewards passages that hit several concepts.

  • Frames: yt-dlp resolves a ≤720p stream URL; ffmpeg seeks with HTTP range requests and decodes one frame per timestamp.

  • Stateless: no database or index. A 15-minute in-memory cache means search → fetch never downloads the same transcript twice.

Configuration

Env var

Default

Meaning

YT_MCP_TOOLS

all

Comma-separated tools to expose

YT_MAX_CONCURRENCY / YT_MIN_GAP_MS

4 / 120

API request queue

YT_CAPTION_CONCURRENCY / YT_CAPTION_GAP_MS

2 / 350

Caption download queue

YT_CAPTION_COOLDOWN_MS

60000

First pause after a caption 429 (doubles per repeat, max 15 min)

YT_PROXY

none

HTTP(S) proxy for all YouTube requests, yt-dlp and ffmpeg

YT_TIMEOUT_MS

15000

Per-request timeout

YT_CACHE_TTL_MS

900000

In-memory cache lifetime

YT_FRAME_MAX_HEIGHT / YT_FRAME_CONCURRENCY

720 / 3

Stream quality for frames; parallel ffmpeg processes

YT_DLP / YT_DLP_PATH / FFMPEG_PATH

on / yt-dlp / ffmpeg

Disable or locate the helpers

YT_DEBUG

off

Log every YouTube request (status, queue wait, latency) to stderr

YT_WEB_CLIENT_VERSION, YT_ANDROID_CLIENT_VERSION, YT_IOS_CLIENT_VERSION

built in

Override Innertube client versions if YouTube starts rejecting them

Honest limits

  • Transcripts are rate-limited per IP. In testing, a burst of roughly 80–100 transcripts within a few minutes triggered HTTP 429 on captions (yt-dlp too, since it uses the same endpoint), while search and metadata kept working. Innertube's get_transcript endpoint is closed to anonymous clients, so there is no second keyless source. The server pauses and tells the agent when to retry; for sweeps of hundreds of videos use YT_PROXY.

  • Search dates are approximate ("3 weeks ago" → ±1 unit). youtube_fetch returns the exact publish date.

  • No server-side date sort: YouTube dropped it; sort: "date" re-sorts fetched results, so pair it with uploaded.

  • Top comments only: the "newest first" sort is not offered to anonymous clients.

  • No captions, no transcript: there is no speech-to-text in the server. Frames still work.

  • Frames take ~10–20 s for the first frames of a video (stream lookup), then ~2 s each; max 20 per video and 40 per call.

FAQ

Does it need a YouTube API key? No. No API key, OAuth or cookies.

Which clients does it work with? Any MCP client over stdio: Claude Code, Codex, Claude Desktop, Cursor, Windsurf, VS Code, Zed and more. Claude Code and Codex get the plugin with the skill.

Does it download videos? No. Transcripts come from caption files; frames are decoded from small byte ranges of the stream.

Does it work for non-English content? Yes: per-query language and region, original-language transcripts by default, and accent-aware highlights.

Researching Instagram Reels too? See the sibling project Reels Research MCP.

Is it affiliated with YouTube or Google? No. It is an independent open-source project. Use it in line with YouTube's terms and respect creators' rights.

Development

npm test          # offline unit tests: parsing, highlights, filters, frame spacing
npm run smoke     # end-to-end against live YouTube through a real MCP client
npm run dev       # run from source
npm run build     # typecheck + bundle to dist/index.js

Layout: src/innertube.ts (HTTP, queues, errors) · src/youtube.ts (search, player, transcripts, watch page, comments, channels) · src/highlights.ts · src/frames.ts · src/tools/* (MCP tools) · skills/ · docs/ (website).

License

MIT. Not affiliated with YouTube or Google. YouTube is a trademark of Google LLC.

Keywords: YouTube MCP server, YouTube transcript MCP, YouTube search for AI agents, Model Context Protocol, Claude Code plugin, Codex plugin, YouTube without API key, YouTube hooks research, video frames for LLMs, agent skill.

Available Tools

4 tools
youtube_channelList channel videosA
Read-onlyIdempotent

List a channel's videos with an outlier score: how many times more views a video got than the channel's median.

Best for: finding a creator's breakout videos (the ones whose hooks/titles/topics worked), reviewing recent uploads, building a list of videos to fetch. Returns: channel stats (subscribers, video count) and videos with views, outlier ×median, date, duration. The median is computed over the videos listed, so list enough (30+) for a fair baseline.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabNoDefault videos.
sortNoDefault latest.
limitNoVideos to list (default 30, max 300).
channelYes@handle, channel URL or UC… channel ID.
minOutlierNoOnly show videos with at least this ×median score, e.g. 2. The median still uses all listed videos.
publishedAfterNoYYYY-MM-DD or YYYY-MM, approximate (from '3 weeks ago'-style dates). Works best with sort=latest.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so safety is covered. The description adds genuinely non-obvious behavior: the median is computed only over the videos returned, so the limit matters for score fairness, and dates may be approximate. It does not discuss pagination or rate limits, but for a read-only listing that is a minor gap.

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?

Three short blocks — what it does, when to use it, what it returns — with the outlier definition front-loaded. Every sentence carries information; nothing is restated from the schema verbatim.

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

Completeness5/5

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

There is no output schema, and the description compensates by summarizing the return payload (channel stats plus per-video views, outlier multiple, date, duration). Combined with the six documented parameters and the median caveat, an agent has everything needed to call it and interpret results.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: the 30+ recommendation for a stable median ties the `limit` parameter to result quality, and the minOutlier caveat is restated in context. This helps an agent choose values rather than just syntax.

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?

States a specific verb and resource ('List a channel's videos') and immediately adds the differentiating feature — the outlier score defined inline as views relative to the channel median. This clearly separates it from youtube_search (query-based) and youtube_fetch (single-video retrieval) without opening a schema.

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

Usage Guidelines4/5

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

The 'Best for:' line enumerates three concrete jobs (finding breakout videos, reviewing recent uploads, building a list to fetch), the last of which implicitly routes to youtube_fetch. It stops short of an explicit exclusion rule naming the alternative tool and its trigger condition, so it is clear context rather than full routing guidance.

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

youtube_doctorCheck YouTube accessA
Read-onlyIdempotent

Check that every YouTube path this server uses works from this machine right now (search, video details, transcripts, watch page, channels, yt-dlp and ffmpeg for frames), with timings. Run it when other youtube_* tools fail.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so safety is covered. The description adds genuinely new behavioral context: it probes live network paths from this machine and reports timings, which tells the agent this is a real-time environment check rather than a cached lookup.

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?

Two sentences, zero filler. The scope enumeration is front-loaded and the usage trigger is the closing sentence, which is exactly the right ordering for a diagnostic tool.

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?

For a no-param diagnostic with no output schema, the description covers what is checked and when to invoke it. It only lightly gestures at the return shape ("with timings") without saying what a partial or total failure report looks like, a small gap given there is no output schema to fill it.

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?

The tool takes zero parameters, so the baseline is 4. The description correctly adds nothing about parameters, and no parameter meaning is left ambiguous.

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?

Specific verb ("Check") plus an enumerated scope: search, video details, transcripts, watch page, channels, yt-dlp, ffmpeg. It is unmistakably a diagnostic tool, cleanly distinguishable from youtube_search, youtube_fetch, and youtube_channel.

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

Usage Guidelines4/5

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

Gives an explicit trigger condition: "Run it when other youtube_* tools fail," which names the sibling tools it complements. It stops short of stating when not to run it (e.g. before any failure, or as a routine preflight), so it is clear context without full exclusions.

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

youtube_fetchRead YouTube videosA
Read-onlyIdempotent

Read YouTube videos: transcript (whole, a time range, a chapter, or only passages matching a query), real video frames, details, chapters, comments and thumbnail. Batch many videos in one call.

Best for: reading what was said after youtube_search, pulling the same slice from many videos (e.g. the first 30 s of each video to study hooks), quoting with exact timestamps. Returns: per video a header (title, channel, exact publish date, views, likes, duration) and the requested parts. Transcript lines carry [m:ss] stamps; links with ?t= jump to the moment. Per-video failures are reported inline, never dropped.

Tips:

  • Hooks / intros: start=0, end=30 (plus parts ["details","transcript","thumbnail","frames"] if the visual hook matters).

  • Frames are real decoded video frames (up to 1280 px): evenly spaced over start–end / the chapter / the whole video (frames=N), or at exact moments (frameAt). The first frames of a video take ~10–20 s (stream lookup); keep frame-heavy calls to a few videos.

  • Finding a topic inside long videos: pass query instead of reading whole transcripts.

  • Long transcript cut off? Call again with start = the second where it stopped.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoRange end for transcript and frames: seconds or 'm:ss'.
partsNoAny of details, transcript, chapters, comments, thumbnail, frames. Default ["details","transcript"].
queryNoReturn only transcript passages matching these phrases (any language/synonyms), not the full text.
startNoRange start for transcript and frames: seconds or 'm:ss'.
framesNoWith part frames: how many frames, evenly spaced over the range (default 6, max 20 per video, 40 per call).
videosYes1–25 video URLs or IDs. A ?t= in a URL is used as start when start is not given.
chapterNoLimit transcript and frames to the chapter whose title contains this text.
frameAtNoWith part frames: exact moments instead of even spacing, e.g. [0, 3, '0:12'].
matchesNoMax passages per video in query mode (default 6, max 20).
frameWidthNoFrame width in px (default 640, max 1280). Wider = readable small text, more tokens.
timestampsNoparagraph (default): ~30 s blocks with [m:ss]; segment: every caption line; none: plain text.
commentsLimitNoTop comments per video (default 20, max 200).
maxCharactersNoTranscript characters per video (default 12000, max 60000).
transcriptLangsNoPreferred transcript languages in order, e.g. ['es','en']. Default: the video's original language.
descriptionCharsNoDescription characters in details (default 1500).

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/non-destructive, and the description goes further with latency (~10–20 s for the first frames, stream lookup) and partial-failure semantics ('per-video failures are reported inline, never dropped'). It also flags cost tradeoffs (frame width = more tokens, frame-heavy calls across a few videos) and truncation behavior, which the agent cannot infer from annotations.

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?

Well front-loaded and organized under Best for / Returns / Tips, with each tip carrying actionable content. Slightly verbose for the payoff, with a little redundancy (batching stated in the opening line and again in the multi-video tip), which keeps it short of a 5.

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

Completeness5/5

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

For a 15-parameter tool with no output schema, the description supplies the return shape (per-video header with title, channel, publish date, views, likes, duration, plus [m:ss]-stamped transcript lines) and the failure/truncation model. An agent has everything needed to compose a correct call and interpret the result.

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?

Schema description coverage is 100%, so the baseline is 3; the description still adds interpretive value by explaining how start/end apply to both transcript and frames, the frames-vs-frameAt distinction, and the ?t= start fallback. It does not add meaning for the more peripheral knobs (commentsLimit, transcriptLangs, descriptionChars, matches) beyond what the schema already says.

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?

Specific verb+resource (read YouTube videos) with the full list of retrievable parts (transcript, frames, details, chapters, comments, thumbnail) and batching scope. The phrase 'after youtube_search' explicitly distinguishes it from the search sibling, so the agent can route without opening schemas.

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

Usage Guidelines5/5

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

Gives concrete when-to-use scenarios (post-search reading, same slice across many videos, quoting with timestamps) and decision rules for alternatives: use query instead of full transcripts for topic finding, and re-call with start=<stop second> when a transcript is cut off. This is close to a decision tree, not just a context hint.

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. 4 tool updatesv0.1.0
    • First observedyoutube_channel
    • First observedyoutube_doctor
    • First observedyoutube_fetch
    • First observedyoutube_search

TDQS

A4.5/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct role: search discovers videos, fetch reads specific videos, channel lists a single channel's videos with outlier scoring, and doctor diagnoses connectivity. The only mild overlap is that search and channel both return video lists, but their query-based vs. per-channel framing is spelled out clearly.

Naming Consistency4/5

All tools share the youtube_ prefix and snake_case, giving a strong predictable pattern. There is a minor deviation in that search/fetch are verbs while channel/doctor are nouns, but the convention is still readable and consistent.

Tool Count5/5

Four tools is well-scoped for a focused research server, and each earns its place: discovery, deep reading, channel analysis, and diagnostics. No tool feels redundant or tacked on.

Completeness4/5

The surface covers the core research lifecycle: find videos, read transcripts/frames/comments, analyze channels, and self-diagnose failures. Minor gaps remain, such as no dedicated playlist handling or channel/creator search, but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

  • YouTube transcripts, search, channel browsing, and playlists for AI agents via MCP.

  • Your agent needs to find video — which channels own a topic, which videos rank for a phrase, what exists in a given country and language. **What you can ask for** • "Which videos rank for 'rag pipeline tutorial' in the US this month?" • "Find channels publishing about MCP, sorted by relevance." • "What playlists cover this subject in Japanese?" • "Search videos uploaded this week only." **How to use it** Point any MCP client at https://mcp.aisa.one/youtube-search/mcp and sign in with OAuth — there is no key to create or paste. One search tool covering videos, channels and playlists, narrowed by country, language, upload date, duration and sort order. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Find the video here, then ask the same agent what the channel's site traffic is or what the same phrase does in Google — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/social/mcp for X plus Instagram, Reddit, Pinterest and YouTube; https://mcp.aisa.one/gtm/mcp for those plus Similarweb and Apollo.

  • YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents.

  • An MCP server that gives any LLM or agent clean YouTube transcripts on demand: a single video, a whole channel, or a playlist, plus AI cleanup of auto-generated captions. API-key auth, credit-based, same backend as the public v1 API. Get a free API key with 25 free credits at youtubetranscriptdownload.com/account.

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    An MCP server that provides YouTube data access without API keys or quotas. It enables agents to search videos, retrieve transcripts and metadata, and perform full-text search across cached content for AI context retrieval.
    3 npm
    -
  • A
    license
    A
    quality
    C
    maintenance
    A production-ready MCP server for YouTube integration with intelligent caching. Enables searching videos, retrieving transcripts, analyzing channels, and monitoring live streams via natural language.
    31
    1
    MIT