youtube-data-mcp
Version:
Extract YouTube transcripts and comments for analysis
186 lines (123 loc) • 4.96 kB
Markdown
# 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