YouTube Transcripts

Transcripts from YouTube videos, whole channels and playlists for AI agents, with bulk ZIP export.

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
97%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'get_transcript' description lacks action verbin get_transcript

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~650Tokens (tool definitions)
~685 BTypical response size
Moderate attention impact (0.51% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "youtube-transcripts": {
      "url": "https://api.youtubetranscripts.fbetteo.com/mcp"
    }
  }
}

Remote endpoints

https://api.youtubetranscripts.fbetteo.com/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_transcript(video_url, include_timestamps)

Return the transcript for a single YouTube video URL or ID.

Input Schema

{
  "type": "object",
  "properties": {
    "video_url": {
      "type": "string",
      "description": "YouTube video URL or video ID."
    },
    "include_timestamps": {
      "type": "boolean",
      "description": "Include transcript timestamps.",
      "default": false
    }
  },
  "required": [
    "video_url"
  ],
  "additionalProperties": false
}
🟢get_channel_info(channel)

Return metadata for a YouTube channel before starting a job.

Input Schema

{
  "type": "object",
  "properties": {
    "channel": {
      "type": "string",
      "description": "Handle, name, or ID."
    }
  },
  "required": [
    "channel"
  ],
  "additionalProperties": false
}
🟢list_channel_videos(channel, limit)

List a YouTube channel's videos with duration metadata, in the order channel jobs use (long-form, then Shorts, then livestreams; newest first). limit=N previews what start_channel_job with max_videos=N downloads; has_more tells if the channel has more.

Input Schema

{
  "type": "object",
  "properties": {
    "channel": {
      "type": "string",
      "description": "Handle, name, or ID."
    },
    "limit": {
      "type": "integer",
      "description": "Maximum videos to return.",
      "default": 100,
      "minimum": 1,
      "maximum": 2000
    }
  },
  "required": [
    "channel"
  ],
  "additionalProperties": false
}
⚪start_channel_job(channel, max_videos, include_timestamps, concatenate_all)

Start an async job that downloads channel transcripts.

Input Schema

{
  "type": "object",
  "properties": {
    "channel": {
      "type": "string",
      "description": "Handle, name, or ID."
    },
    "max_videos": {
      "type": "integer",
      "description": "Optional maximum videos to process.",
      "minimum": 1
    },
    "include_timestamps": {
      "type": "boolean",
      "default": false
    },
    "concatenate_all": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "channel"
  ],
  "additionalProperties": false
}
⚪start_playlist_job(playlist, max_videos, include_timestamps, concatenate_all)

Start an async job that downloads playlist transcripts.

Input Schema

{
  "type": "object",
  "properties": {
    "playlist": {
      "type": "string",
      "description": "YouTube playlist URL or ID."
    },
    "max_videos": {
      "type": "integer",
      "description": "Optional maximum videos to process.",
      "minimum": 1
    },
    "include_timestamps": {
      "type": "boolean",
      "default": false
    },
    "concatenate_all": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "playlist"
  ],
  "additionalProperties": false
}
🟢get_job_status(job_id)

Poll an async transcript job and get a download URL when ready.

Input Schema

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "Transcript job ID."
    }
  },
  "required": [
    "job_id"
  ],
  "additionalProperties": false
}
🟢get_download_url(job_id)

Return the ZIP download URL for a completed job.

Input Schema

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "Transcript job ID."
    }
  },
  "required": [
    "job_id"
  ],
  "additionalProperties": false
}
🔴cancel_job(job_id)

Cancel an async transcript job and refund unprocessed videos.

Input Schema

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "Transcript job ID."
    }
  },
  "required": [
    "job_id"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools