UNPKG

youtube-data-mcp

Version:

Extract YouTube transcripts and comments for analysis

186 lines (123 loc) 4.96 kB
# YouTube Data MCP Server A Model Context Protocol (MCP) server for extracting YouTube video transcripts and comments. This server provides tools to get transcripts and comments from YouTube videos for analysis and summarization. ## Features - `getTranscript`: Extract subtitles/transcripts from YouTube videos - `getVideoInfo`: Get basic information about a YouTube video - `getReplies`: Fetch comments for YouTube videos (using SerpAPI) - `getCommentReplies`: Get replies to specific YouTube comments ## Requirements - Node.js 16+ - TypeScript - SerpAPI API key (for comments functionality) ## Installation(for Developer) ```bash # Clone the repository git clone https://github.com/diasm3/serpapi-youtube-mcp-server.git cd youtube-data-mcp # Install dependencies npm install ``` ## Configuration Create a `.env` file in the root directory with your SerpAPI key: ``` SERPAPI_KEY=your_serpapi_key_here ``` You can get a SerpAPI key by signing up at [SerpAPI](https://serpapi.com/). ## Build and Run ```bash # Build the project npm run build # Run the server npm start ``` The server will start running and listening for commands via stdin/stdout. ## Using with Claude To use this MCP server with Claude: 1. Add the server to your Claude configuration file: ```json { "mcpServers": { "youtube-data": { "command": "npx", "args": ["-y","youtube-data-mcp"], "env": { "SERPAPI_KEY": "your_serpapi_key_here" } } } } ``` 2. Restart Claude to apply the configuration. 3. Now you can ask Claude to: - "Get the transcript for this YouTube video: [URL]" - "Show me the comments for this YouTube video: [URL]" - "Get replies to specific comments" ## API Tools ### searchYoutube Search for videos, channels, and playlists on YouTube. Parameters: - `query`: Search query for YouTube (required) - `limit`: Maximum number of results to return (optional, default: 10) - `gl`: Country code for search results (optional, e.g., 'us', 'kr', 'jp') - `hl`: Language code for search results (optional, e.g., 'en', 'ko', 'ja') - `sp`: Special parameter for filtering or pagination (optional) - `pageToken`: Token for pagination from previous response (optional) Example (via Claude): ``` Search for "JavaScript tutorial" on YouTube and show me the top 5 results ``` ### getVideoInfo Retrieve basic information about a YouTube video. Parameters: - `url`: YouTube video URL or video ID (required) Returns: - `videoId`: The video's ID - `title`: The video's title - `viewCount`: Number of views - `publishDate`: Date when the video was published - `channelName`: Name of the channel that published the video - `commentCount`: Number of comments on the video - `commentsNextPageToken`: Token for fetching comments - `commentsSortingTokens`: Tokens for different comment sorting options Example (via Claude): ``` Get information about this YouTube video: https://www.youtube.com/watch?v=dQw4w9WgXcQ ``` ### getTranscript Extracts transcripts/subtitles from YouTube videos. Parameters: - `url`: YouTube video URL or video ID (required) - `lang`: Language code for transcript (optional, default: 'en') Example (via Claude): ``` Please get the transcript for this YouTube video: https://www.youtube.com/watch?v=dQw4w9WgXcQ ``` ### getReplies Retrieves comments from a YouTube video using SerpAPI. Parameters: - `url`: YouTube video URL or video ID (required for initial page, optional for pagination) - `limit`: Maximum number of comments to retrieve (optional, default: 100) - `sort`: Sort order for comments ('relevance' or 'time', optional, default: 'relevance') - `pageToken`: Token for pagination from previous response (optional) Example (via Claude): ``` Show me comments for this YouTube video: https://www.youtube.com/watch?v=dQw4w9WgXcQ ``` ### getCommentReplies Gets replies for a specific YouTube comment. Parameters: - `pageToken`: Reply token from a comment to get its replies (required) This function is typically used programmatically after getting the `repliesToken` from a comment. ## Understanding SerpAPI Integration This MCP server uses SerpAPI's YouTube Search API and YouTube Video API to fetch search results, comments, and other data. SerpAPI provides a way to scrape YouTube data without directly using YouTube's official API. Key points about SerpAPI usage: - The server uses the `youtube_video` engine with the `v` parameter (YouTube video ID) - Comments are paginated using tokens returned in the API response - Comment replies are fetched separately using their specific tokens - API calls are limited by your SerpAPI subscription plan ## Troubleshooting - If you encounter a 400 Bad Request error, verify your SerpAPI key is valid and properly set in the .env file - Check the server logs for detailed error messages and debugging information - For comment-related issues, ensure SerpAPI still supports the YouTube Video API format used ## License MIT