youtube-connector-mcp 0.3.1
YouTube MCP Server for Claude Code
License: MIT
Requires Python: >=3.10

# YouTube MCP Server (youtube-connector-mcp)

[![MCP Badge](https://lobehub.com/badge/mcp/shellydeng08-youtube-connector-mcp)](https://lobehub.com/mcp/shellydeng08-youtube-connector-mcp)

`youtube-connector-mcp` is a **YouTube MCP Server / Connector** that allows AI assistants like **Claude, Cursor, Cline, Windsurf, Continue.dev, Grapes AI** to interact with the **YouTube Data API v3** via the **Model Context Protocol (MCP)**.

🌐 Project Website: https://youtube-connector-mcp-website.vercel.app/  
📦 PyPI Package: https://pypi.org/project/youtube-connector-mcp/

---

## Quick Start

```bash
# 1. Get your YouTube API Key from Google Cloud Console
#    https://console.cloud.google.com/apis/credentials

# 2. Set your API key as environment variable
export YOUTUBE_API_KEY="your_api_key_here"

# 3. Install pipx first (if not installed)
brew install pipx  # macOS
# or: apt install pipx  # Ubuntu/Debian

# 4. Install the package
pipx install youtube-connector-mcp

# 5. Add the MCP server
claude mcp add youtube-connector-mcp youtube-connector-mcp -s user -e YOUTUBE_API_KEY="${YOUTUBE_API_KEY}"

# 6. Restart Claude Code and start using!
```

---

## Prerequisites

| Requirement         | How to Get                                                                                                                                                                                             |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Python 3.10+**    | [Download Python](https://www.python.org/downloads/) or `brew install python3`                                                                                                                         |
| **YouTube API Key** | Get it free from [Google Cloud Console](https://console.cloud.google.com/apis/credentials)                                                                                                             |
| **MCP Client**      | Any MCP-compatible AI: [Claude](https://claude.com/code), [Cursor](https://cursor.sh), [Cline](https://cline.so), [Windsurf](https://codeium.com/windsurf), [Continue.dev](https://continue.dev), etc. |

---

## Installation

### Install from PyPI (Recommended)

```bash
# Install pipx first (if not installed)
brew install pipx  # macOS
# or: apt install pipx  # Ubuntu/Debian

# Then install the package
pipx install youtube-connector-mcp

# Or with pip in a virtual environment
python3 -m venv .venv
source .venv/bin/activate
pip install youtube-connector-mcp
```

### Install from Source

```bash
git clone https://github.com/ShellyDeng08/youtube-connector-mcp.git
cd youtube-connector-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
```

### Verify Installation

```bash
youtube-connector-mcp --help
claude mcp list  # Check if server is registered
```

---

## Configuration

### Popular AI Coding Tools

| Tool               | Platform          | Config                       |
| ------------------ | ----------------- | ---------------------------- |
| **Claude Code**    | CLI               | `claude mcp add`             |
| **Claude Desktop** | macOS/Windows     | `claude_desktop_config.json` |
| **Cursor IDE**     | Desktop           | Settings UI                  |
| **Cline**          | VS Code Extension | `.cline/config.yaml`         |

> **Note:** Any MCP-compatible AI tool works! Just use the standard JSON config format below.

---

### Option 1: Using `claude mcp add` (Claude Code - Easiest)

```bash
# Install for current project only
claude mcp add youtube-connector-mcp youtube-connector-mcp -s local -e YOUTUBE_API_KEY="${YOUTUBE_API_KEY}"

# Install for all your projects (recommended)
claude mcp add youtube-connector-mcp youtube-connector-mcp -s user -e YOUTUBE_API_KEY="${YOUTUBE_API_KEY}"

# Install to project's .mcp.json
claude mcp add youtube-connector-mcp youtube-connector-mcp -s project -e YOUTUBE_API_KEY="${YOUTUBE_API_KEY}"
```

> **Don't have an API key?** See [Creating a YouTube API Key](#creating-a-youtube-api-key) below - it's free and takes just a few minutes.

---

### Option 2: Standard JSON Configuration

**适用于任何 MCP 兼容的 AI 工具**

```json
{
  "mcpServers": {
    "youtube-connector-mcp": {
      "command": "youtube-connector-mcp",
      "env": {
        "YOUTUBE_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

**各工具配置文件位置：**

| Tool            | Config File Path                                                          |
| --------------- | ------------------------------------------------------------------------- |
| Claude Code     | `~/.claude/mcp_config.json`                                               |
| Claude Desktop  | `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) |
| Cursor IDE      | Settings → MCP Servers (UI)                                               |
| Cline (VS Code) | `.cline/config.yaml`                                                      |

---

### Option 3: Claude Desktop

1. Open Claude Desktop
2. Go to Settings → Developer → Edit Config
3. Or edit the config file directly:

**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "youtube-connector-mcp": {
      "command": "youtube-connector-mcp",
      "env": {
        "YOUTUBE_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

### Option 4: Cursor IDE

1. Open Cursor Settings (Cmd/Ctrl + ,)
2. Go to **MCP Servers** section
3. Add a new server using the JSON format above

### Option 5: Cline (VS Code Extension)

Add to your `.cline/config.yaml`:

```yaml
mcpServers:
  youtube-connector-mcp:
    command: youtube-connector-mcp
    env:
      YOUTUBE_API_KEY: "your_api_key_here"
```

---

### API Key Setup

**Set as Environment Variable (Recommended):**

```bash
# Linux/Mac - Add to ~/.bashrc, ~/.zshrc, or ~/.profile
export YOUTUBE_API_KEY="your_api_key_here"
source ~/.zshrc
```

```powershell
# Windows PowerShell - Add to $PROFILE
$env:YOUTUBE_API_KEY="your_api_key_here"
# Or set permanently
[System.Environment]::SetEnvironmentVariable('YOUTUBE_API_KEY', 'your_api_key_here', 'User')
```

```cmd
# Windows CMD
setx YOUTUBE_API_KEY "your_api_key_here"
```

**Or Put Directly in MCP Config:**

```json
{
  "mcpServers": {
    "youtube-connector-mcp": {
      "command": "youtube-connector-mcp",
      "env": {
        "YOUTUBE_API_KEY": "AIzaSyC-Your-Actual-API-Key-Here"
      }
    }
  }
}
```

> **Security Note:** Using environment variables is safer as it keeps your key out of version control.

---

### Creating a YouTube API Key

1. Go to [Google Cloud Console](https://console.cloud.google.com/)
2. Create a new project or select an existing one
3. Enable [YouTube Data API v3](https://console.cloud.google.com/apis/library)
4. Go to [Credentials](https://console.cloud.google.com/apis/credentials) and create an API key
5. (Optional) Restrict the key to YouTube Data API v3 for better security

### Environment Variables

| Variable             | Required | Default | Description             |
| -------------------- | -------- | ------- | ----------------------- |
| `YOUTUBE_API_KEY`    | Yes      | -       | YouTube Data API v3 key |
| `YOUTUBE_RATE_LIMIT` | No       | 100     | Max requests per second |

---

## Features

### Core Capabilities

| Tool                     | Description                                                                   |
| ------------------------ | ----------------------------------------------------------------------------- |
| `youtube_search`         | Search videos, channels, playlists with filters (duration, date, type, order) |
| `youtube_get_video`      | Get detailed video metadata, statistics, thumbnails, and content details      |
| `youtube_get_channel`    | Get channel info, subscriber count, upload playlists, statistics              |
| `youtube_get_transcript` | Retrieve actual video transcript text with timestamps                         |
| `youtube_get_comments`   | Fetch video comments with pagination support                                  |
| `youtube_get_playlist`   | Get playlist details and complete video list                                  |
| `youtube_list_playlists` | List all playlists for a specific channel                                     |

### Use Cases

- **Research**: Search and analyze YouTube content programmatically
- **Content Analysis**: Extract transcripts and comments for AI processing
- **Channel Monitoring**: Track channel statistics and new uploads
- **Data Mining**: Gather YouTube data for your projects
- **Automated Workflows**: Integrate YouTube data into AI-assisted workflows

---

## Usage Examples

| Category     | Example Prompts                                                                                           |
| ------------ | --------------------------------------------------------------------------------------------------------- |
| **Search**   | "Search for Python tutorials" / "Find recent AI videos" / "Channels about cooking with 100k+ subscribers" |
| **Video**    | "Get details for this video: URL" / "What's the view count?" / "Get the transcript"                       |
| **Channel**  | "How many subscribers does @MKBHD have?" / "Recent uploads from this channel" / "Channel statistics"      |
| **Playlist** | "List all playlists for this channel" / "Get videos in this playlist"                                     |

---

## Troubleshooting

### MCP Server Not Found

**Error:** `No MCP servers configured`

**Solutions:**

1. Verify `~/.claude/mcp_config.json` exists
2. Check JSON syntax is valid
3. Run `claude mcp list` to see registered servers
4. Restart Claude Code after updating config

### Python Not Found

**Error:** `command not found: python`

**Solutions:**

1. Use `python3` instead of `python`
2. Provide full path: `which python3` (Mac/Linux) or `where python` (Windows)

### Module Not Found

**Error:** `ModuleNotFoundError: No module named 'mcp'`

**Solutions:**

- **If using pipx**: `pipx reinstall youtube-connector-mcp`
- **If using pip in venv**: Activate virtual environment first `source .venv/bin/activate`

### API Quota Exceeded

**Error:** `403 Forbidden - quota exceeded`

**Solutions:**

1. Check [Google Cloud Console quota](https://console.cloud.google.com/apis/api/youtube.googleapis.com/quotas)
2. Default: 10,000 units/day
3. Consider upgrading for higher limits

### Transcript Not Available

**Error:** "No transcript available" or "Transcripts are disabled"

**Solutions:**

1. Video may not have captions enabled
2. Auto-generated captions may take 24+ hours after upload
3. Try a video known to have captions

### Transcript Request Blocked

**Error:** "YouTube is blocking requests from your IP"

**Solutions:**
See [youtube-transcript-api documentation](https://github.com/jdepoix/youtube-transcript-api?tab=readme-ov-file#working-around-ip-bans-requestblocked-or-ipblocked-exception) for proxy options.

---

## Development

### Setup

```bash
git clone https://github.com/ShellyDeng08/youtube-connector-mcp.git
cd youtube-connector-mcp
poetry install --with dev
```

### Run Tests

```bash
poetry run pytest
```

### Publishing to PyPI

```bash
# Bump version (PyPI doesn't allow re-uploading the same version)
poetry version patch  # 0.3.0 → 0.3.1
poetry version minor  # 0.3.0 → 0.4.0
poetry version major  # 0.3.0 → 1.0.0

# Build and publish
poetry build
poetry publish
```

---

## License

MIT License - see [LICENSE](LICENSE) for details.

---

## Links

- [Official Website](https://youtube-connector-mcp-website.vercel.app/)
- [GitHub Repository](https://github.com/ShellyDeng08/youtube-connector-mcp)
- [PyPI Package](https://pypi.org/project/youtube-connector-mcp/)
- [YouTube Data API v3 Docs](https://developers.google.com/youtube/v3)
- [Claude Code](https://claude.com/code)

## SEO Keywords

YouTube MCP Server, YouTube MCP Connector, MCP YouTube API, Claude MCP YouTube, Cursor MCP YouTube, AI YouTube API, Model Context Protocol YouTube