MCP server intelligence profile

YouTube for AI Agents MCP Server

Enables AI agents to search, watch, summarize, clip, and extract transcripts from YouTube videos, all without needing an API key or leaving the chat

Local OnlyJCodesMore
Awaiting current scanNpm · 0.2.0

The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.

1Distribution channel
9Independently observed tools
0Linked remote endpoints
AvailableVersion intelligence

Detailed security scan evidence is not public for this MCP yet. Public identity, registry metadata, and independently observed protocol inventory remain available.

Install and connect

Installation and connection instructions are shown only when supported by retained package, repository, or endpoint evidence.

Install @jcodesmore/youtube-for-ai-agents from npm

Version 0.2.0 declares 1 executable entrypoint.

npm install --save-exact @jcodesmore/youtube-for-ai-agents@0.2.0
npx -y -p @jcodesmore/youtube-for-ai-agents@0.2.0 @jcodesmore/youtube-for-ai-agents
MCP client configuration example
{
  "mcpServers": {
    "@jcodesmore/youtube-for-ai-agents": {
      "command": "npx",
      "args": [
        "-y",
        "-p",
        "@jcodesmore/youtube-for-ai-agents@0.2.0",
        "@jcodesmore/youtube-for-ai-agents"
      ]
    }
  }
}

Identity

Canonical slugyoutube-for-ai-agents-f3ea6aa8DeploymentLocal Only
Canonical packagenpm:@jcodesmore/youtube-for-ai-agentsRepositoryJCodesMore/youtube-for-ai-agents
First publishedLatest release
Last security verificationClassification confidence90%
PublicationDraftOfficial distributionNot verified

Distributions

ChannelIdentifierCurrent versionVersionsSource
npm@jcodesmore/youtube-for-ai-agents0.2.01Repository

Current release

PackageVersionPublished / observedInventorySecurity scan
npm@jcodesmore/youtube-for-ai-agents0.2.0CurrentSep 5, 20269 toolsSucceeded · 0 resources · 0 promptsEvidence restricted
Enterprise protection

Continuously monitor this MCP for security risk

Independently scan the exact version your agents use, receive alerts when its risk changes, and investigate every finding with retained version evidence.

  • Independent exact-version security scans
  • Continuous release and vulnerability monitoring
  • Risk-change alerts with capability context
  • Historical evidence and API exports
Custom pricingContact salesTailored to your organization, integrations, data needs, and support requirements.

Current version evidence

No public current-version evidence is available yet.

Current protocol inventory

2025-06-18Negotiated protocol
youtubeServer-reported name
1Capability groups
Aug 14, 2026Observed

Tools 9

ToolCategoryAnnotationsRisk
youtube_clipExtract one or more clips from a YouTube video by timestamp. Downloads the source video once at 720p, then cuts each clip. Each clip needs startTime and endTime (seconds, MM:SS, or HH:MM:SS) and an optional label for the filename. Uses fast keyframe-aligned cuts by default — do NOT set accurate: true unless the user explicitly asks for frame-perfect precision (it re-encodes and is much slower). Keep clips tight — 5-10 seconds each, capturing one key moment per clip. When 2+ clips are provided, automatically produces a per-video highlight reel alongside individual clips.
Input schema
{
  "type": "object",
  "properties": {
    "videoId": {
      "type": "string",
      "description": "YouTube video ID"
    },
    "clips": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "startTime": {
            "type": "string",
            "description": "Start timestamp — seconds (\"90\"), MM:SS (\"1:30\"), or HH:MM:SS (\"1:30:00\")"
          },
          "endTime": {
            "type": "string",
            "description": "End timestamp — seconds (\"225\"), MM:SS (\"3:45\"), or HH:MM:SS (\"1:30:00\")"
          },
          "label": {
            "type": "string",
            "description": "Label for output filename (e.g. \"intro\" produces \"Title - intro.mp4\")"
          }
        },
        "required": [
          "startTime",
          "endTime"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "description": "One or more clip definitions with start/end timestamps"
    },
    "outputDir": {
      "type": "string",
      "description": "Output directory for clip files (defaults to current directory)"
    },
    "quality": {
      "type": "string",
      "enum": [
        "best",
        "bestefficiency",
        "144p",
        "240p",
        "360p",
        "480p",
        "720p",
        "1080p",
        "1440p",
        "2160p"
      ],
      "description": "Video quality for the source download (default: best)"
    },
    "accurate": {
      "type": "boolean",
      "description": "Frame-accurate cuts via re-encoding — MUCH slower. Only use when the user explicitly needs frame-perfect precision. Default fast keyframe cuts are fine for nearly all use cases (default: false)"
    },
    "force": {
      "type": "boolean",
      "description": "Bypass the duration guard for long videos"
    },
    "highlightReel": {
      "type": "boolean",
      "description": "Combine all clips into a single highlight-reel video (default: true). Set to false for individual clips only."
    }
  },
  "required": [
    "videoId",
    "clips"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": false,
  "destructiveHint": false,
  "openWorldHint": true
}
WritesNon-destructiveOpen world
youtube_downloadDownload a YouTube video or audio track to a local file. Defaults to 720p quality. Supports quality selection (720p/1080p/best/etc.), download type (video+audio/audio/video), and format. Videos over 30 minutes trigger a confirmation prompt — use force: true to bypass. For video+audio, automatically downloads and muxes separate streams.
Input schema
{
  "type": "object",
  "properties": {
    "videoId": {
      "type": "string",
      "description": "YouTube video ID"
    },
    "outputPath": {
      "type": "string",
      "description": "Output file path (defaults to <title>.<format> in current directory)"
    },
    "quality": {
      "type": "string",
      "enum": [
        "best",
        "bestefficiency",
        "144p",
        "240p",
        "360p",
        "480p",
        "720p",
        "1080p",
        "1440p",
        "2160p"
      ],
      "description": "Video quality (default: best)"
    },
    "type": {
      "type": "string",
      "enum": [
        "video+audio",
        "audio",
        "video"
      ],
      "description": "Download type — \"video+audio\" (default), \"audio\" (audio only), or \"video\" (no audio)"
    },
    "format": {
      "type": "string",
      "description": "Container format (default: mp4)"
    },
    "force": {
      "type": "boolean",
      "description": "Bypass the duration guard for long videos"
    }
  },
  "required": [
    "videoId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": false,
  "destructiveHint": false,
  "openWorldHint": true
}
WritesNon-destructiveOpen world
youtube_get_channel_infoGet metadata for a YouTube channel — name, handle, description, subscriber count, country, and more. Accepts @handle, full URL, or channel ID.
Input schema
{
  "type": "object",
  "properties": {
    "channelId": {
      "type": "string",
      "description": "@handle, full YouTube URL, or channel ID"
    }
  },
  "required": [
    "channelId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read onlyNon-destructiveOpen world
youtube_get_channel_videosList videos from a YouTube channel. Accepts @handle, full URL, or channel ID. Returns videos sorted by newest, popular, or oldest.
Input schema
{
  "type": "object",
  "properties": {
    "channelUrl": {
      "type": "string",
      "description": "@handle, full YouTube URL, or channel ID"
    },
    "limit": {
      "type": "number",
      "minimum": 1,
      "maximum": 500,
      "description": "Max videos to return (default: 30, max: 500)"
    },
    "sort": {
      "type": "string",
      "enum": [
        "newest",
        "popular",
        "oldest"
      ],
      "description": "Sort order (default: newest)"
    }
  },
  "required": [
    "channelUrl"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read onlyNon-destructiveOpen world
youtube_get_playlistGet a YouTube playlist's metadata and its videos. Returns title, description, channel, video count, and the list of videos with their positions.
Input schema
{
  "type": "object",
  "properties": {
    "playlistId": {
      "type": "string",
      "description": "YouTube playlist ID (e.g. PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf)"
    },
    "limit": {
      "type": "number",
      "minimum": 1,
      "maximum": 200,
      "description": "Max videos to return (default: 30, max: 200)"
    }
  },
  "required": [
    "playlistId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read onlyNon-destructiveOpen world
youtube_get_transcriptGet the transcript of a YouTube video. Control output size with: "format" — "text" (fullText only, smallest), "segments" (timestamps only), or "both" (default). Use "startTime"/"endTime" (seconds) to grab a specific section (pairs well with chapter timestamps from youtube_get_video_info). Use "maxSegments" to cap output for previewing long videos.
Input schema
{
  "type": "object",
  "properties": {
    "videoId": {
      "type": "string",
      "description": "YouTube video ID"
    },
    "language": {
      "type": "string",
      "description": "Language code (default: \"en\")"
    },
    "format": {
      "type": "string",
      "enum": [
        "text",
        "segments",
        "both"
      ],
      "description": "Response format — \"text\" (fullText only, smallest response), \"segments\" (timestamped array only), or \"both\" (default). Use \"text\" to cut response size roughly in half."
    },
    "startTime": {
      "type": "number",
      "description": "Only return segments at or after this time (seconds). Pairs well with chapter timestamps from youtube_get_video_info."
    },
    "endTime": {
      "type": "number",
      "description": "Only return segments before this time (seconds)."
    },
    "maxSegments": {
      "type": "number",
      "description": "Max segments to return (capped at 5000). Good for previewing long videos without blowing up context."
    }
  },
  "required": [
    "videoId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read onlyNon-destructiveOpen world
youtube_get_video_infoGet metadata for a YouTube video. Use "detail" to control response size: "brief" (key stats only — title, channel, views, likes, duration), "standard" (default — most fields, truncated description, chapter count), or "full" (everything including full description, chapters, tags, thumbnail).
Input schema
{
  "type": "object",
  "properties": {
    "videoId": {
      "type": "string",
      "description": "YouTube video ID"
    },
    "detail": {
      "type": "string",
      "enum": [
        "brief",
        "standard",
        "full"
      ],
      "description": "Detail level — \"brief\" (key metadata only), \"standard\" (most fields, truncated description, no chapters), or \"full\" (everything). Default: standard"
    }
  },
  "required": [
    "videoId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read onlyNon-destructiveOpen world
youtube_highlight_reelCombine existing clip files into a single highlight reel. Pass file paths from previous youtube_clip results in your desired playback order. Use this after clipping multiple videos to create one combined reel across all sources. The order of the clips array determines playback order — arrange clips for narrative flow before calling.
Input schema
{
  "type": "object",
  "properties": {
    "clips": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 2,
      "description": "File paths to existing clip/video files, in your desired playback order"
    },
    "outputDir": {
      "type": "string",
      "description": "Output directory for the highlight reel (defaults to current directory)"
    },
    "label": {
      "type": "string",
      "description": "Name for the reel file — produces \"{label}.mp4\" (default: \"highlight-reel\")"
    }
  },
  "required": [
    "clips"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": false,
  "destructiveHint": false,
  "openWorldHint": true
}
WritesNon-destructiveOpen world
youtube_searchSearch YouTube for videos, channels, or playlists. Supports filtering by upload date (today/week/month/year), duration (short/medium/long), and sorting (relevance/date/views/rating). Returns results with metadata including title, channel, views, duration, and whether results are personalized.
Input schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search query"
    },
    "limit": {
      "type": "number",
      "minimum": 1,
      "maximum": 50,
      "description": "Number of results (default: 20, max: 50)"
    },
    "type": {
      "type": "string",
      "enum": [
        "video",
        "channel",
        "playlist"
      ],
      "description": "Filter by type (default: video)"
    },
    "uploadDate": {
      "type": "string",
      "enum": [
        "all",
        "today",
        "week",
        "month",
        "year"
      ],
      "description": "Filter by upload date — \"today\", \"week\", \"month\", \"year\", or \"all\" (default: all)"
    },
    "duration": {
      "type": "string",
      "enum": [
        "all",
        "short",
        "medium",
        "long"
      ],
      "description": "Filter by duration — \"short\" (<4 min), \"medium\" (4-20 min), \"long\" (>20 min), or \"all\" (default: all)"
    },
    "sortBy": {
      "type": "string",
      "enum": [
        "relevance",
        "rating",
        "date",
        "views"
      ],
      "description": "Sort results — \"relevance\", \"date\" (newest first), \"views\" (most viewed), \"rating\", or default relevance"
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read onlyNon-destructiveOpen world

Resources 0

  • None observed.

Resource templates 0

  • None observed.

Prompts 0

  • None observed.

Remote endpoints

EndpointTransportAuthenticationHealthObserved
No verified remote endpoint is linked.

YouTube for AI Agents MCP Server questions

How do I install YouTube for AI Agents MCP Server?

Install the selected package version with: npm install --save-exact @jcodesmore/youtube-for-ai-agents@0.2.0

What tools does YouTube for AI Agents MCP Server provide?

YouTube for AI Agents MCP Server exposed 9 tools during independent protocol observation, including youtube_clip, youtube_download, youtube_get_channel_info, youtube_get_channel_videos, youtube_get_playlist, youtube_get_transcript, youtube_get_video_info, youtube_highlight_reel, and others.

Is YouTube for AI Agents MCP Server secure?

The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.

Company and product intelligence

These internal links are derived from strong identity fields such as the implementation name, package, repository, vendor, and listing name—not generic description prose.

Associated company landscape

Google intelligence →

Association is based on retained identity fields; it does not by itself prove first-party publication.

Explore related MCP server guides

Curated product and capability guides containing this catalog record.

Official vs Community MCP Servers

Let’s talk about MCP security.

Share your details and our security team will contact you.