YouTube MCP Integration
by spolepaka
Verified
# YouTube MCP Integration
This project provides a [Model Context Protocol (MCP)](https://github.com/modelcontextprotocol/typescript-sdk) integration for YouTube, allowing LLMs to search YouTube, get video information, and retrieve transcripts via standardized tools.
## Features
- **YouTube Search Tool**: Search for videos on YouTube with configurable result limits
- **Video Info Tool**: Get detailed information about a YouTube video
- **Transcript Tool**: Retrieve and parse the transcript of a YouTube video
## Architecture
The implementation follows the Model Context Protocol (MCP) specification, which standardizes how LLMs interact with external tools and resources. The architecture consists of:
1. **MCP Server**: Provides YouTube functionality as MCP tools through HTTP/SSE transport
2. **YouTube API Integration**: Scrapes YouTube data to provide search, video info, and transcript functionality
3. **MCP Client**: Example client showing how to consume the MCP YouTube tools
## Getting Started
### Prerequisites
- Node.js 18+
- npm
### Installation
```bash
# Clone the repository
git clone https://github.com/your-username/ephor-youtube-mcp.git
cd ephor-youtube-mcp
# Install dependencies
npm install
# Build the project
npm run build
```
### Running the Server
Start the MCP server:
```bash
npm run start
```
The server will start on http://localhost:3000 with the following endpoints:
- SSE endpoint: `/sse`
- Message endpoint: `/messages`
### Using with an MCP Client
The MCP tools can be used with any MCP-compatible client. Here's an example of how to use the tools:
```typescript
// Initialize client
const client = new Client(
{ name: 'youtube-client', version: '1.0.0' },
{ capabilities: { tools: {} } }
);
// Connect to the server
await client.connect(transport);
// Search YouTube
const searchResults = await client.callTool({
name: 'youtube_search',
arguments: {
query: 'javascript tutorial',
limit: 3
}
});
// Get video info
const videoInfo = await client.callTool({
name: 'youtube_get_video_info',
arguments: {
input: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
}
});
// Get video transcript
const transcript = await client.callTool({
name: 'youtube_get_transcript',
arguments: {
input: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
}
});
```
## Available Tools
### `youtube_search`
Search for YouTube videos.
**Arguments:**
- `query` (string, required): The search query
- `limit` (number, optional): Maximum number of results (1-10, default: 5)
**Response:**
A list of video results with details like title, video ID, URL, thumbnail, description, channel info, view count, and publish date.
### `youtube_get_video_info`
Get detailed information about a YouTube video.
**Arguments:**
- `input` (string, required): YouTube video ID or URL
**Response:**
Detailed video information including title, description, view count, publish date, channel details, and thumbnail URL.
### `youtube_get_transcript`
Get the transcript of a YouTube video.
**Arguments:**
- `input` (string, required): YouTube video ID or URL
**Response:**
The video transcript with timestamped entries, along with basic video information.
## License
MIT
## Acknowledgements
- [Model Context Protocol](https://github.com/modelcontextprotocol/typescript-sdk)