Uses Express for server functionality, likely to handle OAuth authentication flows when accessing YouTube content.
Utilizes Google's authentication services (OAuth2) for accessing YouTube content, particularly for private videos, requiring setup through the Google Cloud Console.
Converts YouTube video content into various markdown formats using customizable templates for transcripts, detailed metadata with timestamps, and search results with context highlighting.
Provides tools for interacting with YouTube videos, including extracting video metadata, captions in multiple languages, and converting content to markdown with various templates. Supports search functionality within video captions and flexible authentication methods.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@YouTube MCP Serverget the transcript for https://www.youtube.com/watch?v=dQw4w9WgXcQ in French"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
YouTube MCP Server
A Model Context Protocol (MCP) server for interacting with YouTube videos. This server provides tools for extracting video metadata, captions, and converting them to markdown format with various templates.
Features
Video Metadata: Fetch comprehensive video information
Caption Extraction: Support for auto-generated and manual captions
Multiple Languages: Built-in support for English and French
Template System: Three built-in markdown templates:
Basic: Simple transcript format
Detailed: Full metadata with timestamps
Search: Results highlighting with context
Search Functionality: Search within video captions
Flexible Authentication: Supports both API key and OAuth2 authentication
Related MCP server: YouTube MCP Server
Prerequisites
Node.js (v16 or higher)
npm or yarn
A YouTube Data API key and/or OAuth2 credentials
Installation
Clone the repository:
git clone [repository-url]
cd youtube-mcpInstall dependencies:
npm installBuild the project:
npm run buildConfiguration
Create a .env file in the root directory with your YouTube credentials:
YOUTUBE_API_KEY=your_api_key
YOUTUBE_CLIENT_ID=your_client_id
YOUTUBE_CLIENT_SECRET=your_client_secret
YOUTUBE_REFRESH_TOKEN=your_refresh_token # Optional, for OAuth2MCP Configuration
Add the server to your MCP settings file (usually at ~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json):
{
"mcpServers": {
"youtube": {
"command": "node",
"args": ["path/to/youtube-mcp/build/index.js"],
"env": {
"YOUTUBE_API_KEY": "your_api_key",
"YOUTUBE_CLIENT_ID": "your_client_id",
"YOUTUBE_CLIENT_SECRET": "your_client_secret"
},
"disabled": false,
"alwaysAllow": []
}
}
}Usage
The server provides the following tools:
1. Get Video Info
use_mcp_tool youtube get_video_info {
"url": "https://www.youtube.com/watch?v=VIDEO_ID"
}2. Get Captions
use_mcp_tool youtube get_captions {
"url": "https://www.youtube.com/watch?v=VIDEO_ID",
"language": "en" // Optional, defaults to "en"
}3. Convert to Markdown
use_mcp_tool youtube convert_to_markdown {
"url": "https://www.youtube.com/watch?v=VIDEO_ID",
"template_name": "detailed", // Optional, "basic", "detailed", or "search"
"language": "en", // Optional
"options": { // Optional
"include_chapters": true,
"search_term": "keyword" // Only for search template
}
}4. List Templates
use_mcp_tool youtube list_templatesDependencies
{
"dependencies": {
"@modelcontextprotocol/sdk": "latest",
"googleapis": "^146.0.0",
"google-auth-library": "^9.0.0",
"youtube-captions-scraper": "^2.0.0",
"express": "^4.18.2",
"open": "^9.1.0"
},
"devDependencies": {
"@types/node": "^20.0.0",
"typescript": "^5.0.0",
"tsx": "^4.0.0"
}
}OAuth2 Setup
For OAuth2 authentication (required for private video access):
Create a project in the Google Cloud Console
Enable the YouTube Data API v3
Create OAuth2 credentials (Web application type)
Run the authentication script:
node src/get-api-key.jsFollow the browser prompts to authorize the application
Copy the refresh token to your configuration
Customizing Templates
You can add custom templates by modifying the DEFAULT_TEMPLATES array in src/index.ts. Templates follow this structure:
interface MarkdownTemplate {
name: string;
description: string;
format: {
header?: string;
chapter_format?: string;
caption_block: string;
timestamp_format?: string;
search_result_format?: string;
}
}License
MIT
Contributing
Fork the repository
Create your feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add some amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.